package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.PO.PropertyParkCouponPO;
import com.itlong.cloud.POJO.VO.property.PropertyParkCouponGetOneVO;
import com.itlong.cloud.POJO.VO.property.PropertyParkCouponGetPageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      智慧停车-停车优惠券管理持久层接口
 * </desc>
 *
 * @createDate 2018/11/06
 */
@Mapper
@Repository
public interface IPropertyParkCouponDao {

    /**
     * <desc>
     *      获取单个优惠券信息
     * </desc>
     *
     * @param parkCouponId 优惠券id
     * @return 单个优惠券信息
     * @author wangzhi
     * @createDate 2018/11/06
     */
    PropertyParkCouponGetOneVO getOneCoupon(@Param("parkCouponId") String parkCouponId);

    /**
     * <desc>
     *      分页获取优惠券
     * </desc>
     *
     * @param params 查询参数集
     * @return 结果集
     * @author wangzhi
     * @createDate 2018/11/06
     */
    List<PropertyParkCouponGetPageVO> getCouponPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取优惠券总记录数
     * </desc>
     *
     * @param params 查询参数集
     * @return 总记录数
     * @author wangzhi
     * @createDate 2018/11/06
     */
    Integer getCouponRecordCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取项目未使用的优惠券数量
     * </desc>
     *
     * @param projectId 项目id
     * @return 项目未使用的优惠券数量
     * @author wangzhi
     * @createDate 2018/11/06
     */
    Integer getAvailableCouponCount(@Param("projectId") String projectId);

    /**
     * <desc>
     *      生成优惠券
     * </desc>
     *
     * @param propertyParkCouponPOList 待保存的优惠券
     * @return 1-成功 other-失败
     * @author wangzhi
     * @createDate 2018/11/06
     */
    Integer saveCoupon(List<PropertyParkCouponPO> propertyParkCouponPOList);

    /**
     * <desc>
     *      修改优惠券
     * </desc>
     *
     * @param map 修改参数
     * @return 受影响的行数
     * @author wangzhi
     * @createDate 2018/11/07
     */
    Integer update(Map<String, Object> map);

    /**
     * <desc>
     *      删除优惠券
     * </desc>
     *
     * @param idList id集合
     * @return 1-成功 other-失败
     * @author wangzhi
     * @createDate 2018/11/07
     */
    Integer deleteCoupons(List<String> idList);

    /**
     * <desc>
     *      获取优惠券by逻辑主键集合
     * </desc>
     *
     * @param idList id集合
     * @return 优惠券集合
     * @author wangzhi
     * @createDate 2018/11/07
     */
    List<PropertyParkCouponGetPageVO> getCouponsByIds(List<String> idList);

    /**
     * <desc>
     *      获取满足条件的优惠券集合
     * </desc>
     *
     * @param params 查询参数集
     * @return 优惠券集合
     * @author wangzhi
     * @createDate 2018/11/07
     */
    List<PropertyParkCouponGetPageVO> getCouponsByCondition(Map<String, Object> params);

}
